package com.king.service;

import com.google.gson.JsonObject;
import com.king.config.GlobalConst;
import com.king.utils.CommonUtils;

/**
 * 微信模板消息
 */
public class WxTemplateService {

    private static final String API_SET_INDUSTRY = GlobalConst.getConfig("API_SET_INDUSTRY");
    private static final String API_GET_INDUSTRY = GlobalConst.getConfig("API_GET_INDUSTRY");
    private static final String API_SEND_TEMPLATE_MSG = GlobalConst.getConfig("API_SEND_TEMPLATE_MSG");

    /**
     * 设置所属行业
     * http请求方式: POST
     * https://api.weixin.qq.com/cgi-bin/template/api_set_industry?access_token=ACCESS_TOKEN
     * 请求数据示例：
     * {
     * "industry_id1":"1",
     * "industry_id2":"4"
     * }
     * 参数	是否必须	说明
     * access_token	是	接口调用凭证
     * industry_id1	是	公众号模板消息所属行业编号
     * industry_id2	是	公众号模板消息所属行业编号
     *
     * @return
     */
    public String setIndustry(String data) {
        String url = API_SET_INDUSTRY.replace("ACCESS_TOKEN", WxTokenService.getAccessToken());
        return CommonUtils.post(url, data);
    }

    /**
     * 获取设置的行业信息
     * http请求方式：GET
     * https://api.weixin.qq.com/cgi-bin/template/get_industry?access_token=ACCESS_TOKEN
     * 参数	是否必须	说明
     * access_token	是	接口调用凭证
     * 正确调用后的返回示例：
     * {
     * "primary_industry":{"first_class":"运输与仓储","second_class":"快递"},
     * "secondary_industry":{"first_class":"IT科技","second_class":"互联网|电子商务"}
     * }
     * 参数	是否必填	说明
     * access_token	是	接口调用凭证
     * primary_industry	是	帐号设置的主营行业
     * secondary_industry	是	帐号设置的副营行业
     *
     * @return
     */
    public String getIndustry() {
        String sql = API_GET_INDUSTRY.replace("ACCESS_TOKEN", WxTokenService.getAccessToken());
        return CommonUtils.get(sql);
    }

    /**
     * 发送模板消息
     * <p>
     * http请求方式: POST
     * https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN
     * POST数据示例如下：
     * {
     * "touser":"OPENID",
     * "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
     * "url":"http://weixin.qq.com/download",
     * "miniprogram":{
     * "appid":"xiaochengxuappid12345",
     * "pagepath":"index?foo=bar"
     * },
     * "data":{
     * "first": {
     * "value":"恭喜你购买成功！",
     * "color":"#173177"
     * },
     * "keyword1":{
     * "value":"巧克力",
     * "color":"#173177"
     * },
     * "keyword2": {
     * "value":"39.8元",
     * "color":"#173177"
     * },
     * "keyword3": {
     * "value":"2014年9月22日",
     * "color":"#173177"
     * },
     * "remark":{
     * "value":"欢迎再次购买！",
     * "color":"#173177"
     * }
     * }
     * }
     * 参数	是否必填	说明
     * touser	是	接收者openid
     * template_id	是	模板ID
     * url	否	模板跳转链接（海外帐号没有跳转能力）
     * miniprogram	否	跳小程序所需数据，不需跳小程序可不用传该数据
     * appid	是	所需跳转到的小程序appid（该小程序appid必须与发模板消息的公众号是绑定关联关系，暂不支持小游戏）
     * pagepath	否	所需跳转到小程序的具体页面路径，支持带参数,（示例index?foo=bar），要求该小程序已发布，暂不支持小游戏
     * data	是	模板数据
     * color	否	模板内容字体颜色，不填默认为黑色
     * <p>
     * 注：url和miniprogram都是非必填字段，若都不传则模板无跳转；
     * 若都传，会优先跳转至小程序。开发者可根据实际需要选择其中一种跳转方式即可。当用户的微信客户端版本不支持跳小程序时，将会跳转至url。
     * <p>
     * 在调用模板消息接口后，会返回JSON数据包。正常时的返回JSON数据包示例：
     * {
     * "errcode":0,
     * "errmsg":"ok",
     * "msgid":200228332
     * }
     * <p>
     * 在模版消息发送任务完成后，微信服务器会将是否送达成功作为通知，发送到开发者中心中填写的服务器配置地址中。
     * ==>查看WxMessageHanlder
     *
     * @param data
     * @return
     */
    public JsonObject sendTemplateMsg(String data) {
        String url = API_SEND_TEMPLATE_MSG.replace("ACCESS_TOKEN", WxTokenService.getAccessToken());
        String result = CommonUtils.post(url, data);
        JsonObject jsonObject = GlobalConst.gson.fromJson(result, JsonObject.class);
        return jsonObject;
    }
}
